Socket Buffers হলো নেটওয়ার্ক Socket-এর জন্য ব্যবহৃত মেমরি স্পেস, যা ডেটা পাঠানোর (send) এবং গ্রহণের (receive) সময় ব্যবহৃত হয়। এগুলো ডেটা ট্রান্সমিশনের কর্মক্ষমতা উন্নত করতে গুরুত্বপূর্ণ ভূমিকা পালন করে। Socket Buffers-এর সাইজ এবং ব্যবস্থাপনা নিয়ন্ত্রণ করে নেটওয়ার্ক অ্যাপ্লিকেশনগুলোর কর্মক্ষমতা এবং কার্যকারিতা বৃদ্ধি করা যায়। নিচে Socket Buffers এবং তাদের নিয়ন্ত্রণ নিয়ে বিস্তারিত আলোচনা করা হলো:
Send Buffer:
SO_SNDBUF
অপশন ব্যবহার করে Send Buffer-এর সাইজ নিয়ন্ত্রণ করা যায়।Receive Buffer:
SO_RCVBUF
অপশন ব্যবহার করে Receive Buffer-এর সাইজ নিয়ন্ত্রণ করা যায়।setsockopt()
এবং getsockopt()
ব্যবহারSocket Buffers-এর সাইজ সেট এবং চেক করার জন্য setsockopt()
এবং getsockopt()
ফাংশন ব্যবহার করা হয়।
setsockopt()
:SO_SNDBUF
এবং SO_RCVBUF
অপশন ব্যবহার করে যথাক্রমে Send এবং Receive Buffer-এর সাইজ নির্ধারণ করা হয়।getsockopt()
:c
Copy code
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <arpa/inet.h>
#include <sys/socket.h>
#define PORT 8080
int main() {
int server_fd;
struct sockaddr_in server_addr;
int send_buf_size, recv_buf_size;
socklen_t optlen;
// Server socket তৈরি করা
server_fd = socket(AF_INET, SOCK_STREAM, 0);
if (server_fd < 0) {
perror("Socket creation failed");
exit(EXIT_FAILURE);
}
// Send Buffer Size সেট করা
send_buf_size = 32768; // 32 KB
if (setsockopt(server_fd, SOL_SOCKET, SO_SNDBUF, &send_buf_size, sizeof(send_buf_size)) < 0) {
perror("setsockopt for SO_SNDBUF failed");
close(server_fd);
exit(EXIT_FAILURE);
}
// Receive Buffer Size সেট করা
recv_buf_size = 32768; // 32 KB
if (setsockopt(server_fd, SOL_SOCKET, SO_RCVBUF, &recv_buf_size, sizeof(recv_buf_size)) < 0) {
perror("setsockopt for SO_RCVBUF failed");
close(server_fd);
exit(EXIT_FAILURE);
}
// Buffer Size যাচাই করা
optlen = sizeof(send_buf_size);
getsockopt(server_fd, SOL_SOCKET, SO_SNDBUF, &send_buf_size, &optlen);
getsockopt(server_fd, SOL_SOCKET, SO_RCVBUF, &recv_buf_size, &optlen);
printf("Send Buffer Size: %d bytes\n", send_buf_size);
printf("Receive Buffer Size: %d bytes\n", recv_buf_size);
close(server_fd);
return 0;
}
ডেটা ট্রান্সমিশন পারফরম্যান্স বাড়ানো:
ডেটা লস এড়ানো:
নেটওয়ার্ক ল্যাটেন্সি এবং ব্যান্ডউইথ ব্যবস্থাপনা:
Buffer Size-এর সীমা:
/proc/sys/net/core/wmem_max
এবং /proc/sys/net/core/rmem_max
ফাইলগুলো পরিবর্তন করে Buffer সাইজ বাড়ানো যায়।TCP Window Size:
UDP এবং TCP সংযোগের Buffer Management:
common.read_more